import axios from 'axios'
import {getToken, getUsername} from '@/core/auth.js'
import {isNotEmpty} from '@/utils/plugins.js'
import router from "@/router";
import { ElMessage } from 'element-plus'

// const router = useRouter()
const baseURL = '/api/short-link/admin/v1'
// 创建实例
const http = axios.create({
    // api 代理为服务器请求地址
    baseURL: baseURL,
    timeout: 15000
})
// 请求拦截 -->在请求发送之前做一些事情
http.interceptors.request.use(
    (config) => {
        config.headers.Token = encodeURIComponent(isNotEmpty(getToken()) ? getToken() : '')
        config.headers.Username = encodeURIComponent(isNotEmpty(getUsername()) ? getUsername() : '')
        //console.log('Token:', getToken());
        //console.log('Username:', getUsername());
        //console.log('Request Headers:', config.headers);
        return config
    },
    (error) => {
        return Promise.reject(error)
    }
)
// 响应拦截 -->在返回结果之前做一些事情
http.interceptors.response.use(
    (res) => {
        if (res.status === 0 || res.status === 200) {
            // 请求成功对响应数据做处理，此处返回的数据是axios.then(res)中接收的数据
            return Promise.resolve(res)
        }
        return Promise.reject(res)
    },
    (err) => {
        // 在请求错误时要做的事儿
        if (err.response) {
            // 检查是否存在 response 对象
            if (err.response.status === 401) {
                localStorage.removeItem('token')
                router.push('/login')
            }
        } else {
            // 这里处理没有 response 对象的错误，例如网络错误
            ElMessage.error('请求失败，请检查网络连接！')
        }

        return Promise.reject(err)
    }
)

export default http
